<?php
	include_once '../../include/inc_session.php';	
	

	// Récuperation numéro personne, numéro contrat, type assure, numéro de sinistre 	
	if (isset($_GET['idsinistre']) ||isset($_GET['idc'])) 
	{
		$idSinistre = $_GET['idsinistre'];
		$idContrat = $_GET['idc'];
	}
	
	$DECISION_ASSUREUR = isset($_POST['NXX_Decision_assureur']) ? $_POST['NXX_Decision_assureur'] : -1;
	$MOTIF_REFUS = isset($_POST['NXX_motif_refus']) ? $_POST['NXX_motif_refus'] : -1;
	$TYPE_PRESTATION = isset($_POST['Nxx_Type_prestation']) ? $_POST['Nxx_Type_prestation'] : -1;
	$TYPE_PRESTATION_1 = isset($_POST['Nxx_Type_prestation1']) ? $_POST['Nxx_Type_prestation1'] : -1;
	$MNT_PRESTATION = isset($_POST['NXX_montant_prestation']) ? $_POST['NXX_montant_prestation'] : '';
	$MNT_PRESTATION_1 = isset($_POST['NXX_montant_prestation1']) ? $_POST['NXX_montant_prestation1'] : '';
	

	// Construction de l’objet Template
	$oPaj= new Template(PATH_TEMPLATE.'tpl_resultat_instruction.html');
	
	// Remplacement simple
	$oPaj->replace('nom_module', $oBloc->_MENU_NOM);
	$oPaj->replace('nom_fonction', $oFonction->_MENU_AFFICHE);
	$oPaj->replace('nom_liste', "Détail instruction");
	$oPaj->replace('css_module', "../../sinistres/list.css");
			
	
	$oSinistre = new dataObject_sinistre($idSinistre);
	$oEvenement = new dataObject_evenement();
	
	$sDateSurvenance  = $oSinistre->_DATE_SURVENANCE_SINISTRE; //$_GET['datesurvenance'];
	$sOldEtatSinistre = $oSinistre->_ETAT_SINISTRE;
	$sOldMotifRefus   = $oSinistre->_MOTIF_REFUS_SINISTRE;
	$sOldDecisionPart = $oSinistre->_DECISION_PARTENAIRE_SINISTRE;
	
		//$idprestation = $oSinistre->sinistre_getIdPrestation($idSinistre);
		//$aType_sinistre = $oSinistre->sinistre_getTypeprestation();
		//$aDecisionpartenaire = $oSinistre->sinistre_getDecision_partenaire();
		//$aMotifrefus = $oSinistre->sinistre_getMotif_refus_Indemnistation();
		//$oPrestation = new dataObject_prestation($idprestation);
	$oPrestation = new dataObject_prestation();
	$idPersonne = $oSinistre->sinistre_getIdPersonne($idSinistre);
	$date_evenement =  date('Y-m-d');
	$idUser = $_SESSION['iduser'];
	
	// construction du tableau de valeurs
	$sLibTypSinistre = dataObject_elementdico::elementdico_getNomFromCode($oSinistre->_TYPE_SINISTRE, dataObject_dictionnaire::TYPE_SINISTRE);
	
	$asInputs = array(array('label_input'=>'TYPE SINISTRE','input_name'=>'Nxx_type', 'input_value'=> $sLibTypSinistre,'class'=>'resize_1',
					 'label_input4'=>'ELIGIBLE','input_name4'=>'NXX_eligible', 'input_value4'=> $oSinistre->_ELIGIBILITE_SINISTRE,'class'=>'resize_1'),
					  );
   					  
	$asInputs_2 = array(array('label_select_1'=>'DECISION ASSUREUR','select_name_1'=>'NXX_Decision_assureur')
				);
	$asInputs_4 = array(array('label_select_2'=>'MOTIF REFUS','select_name_2'=>'NXX_motif_refus')
				);	
				
	$asInputs_3 = array(array('label_input1'=>'TYPE PRESTATION',
				'label_input2'=>'MONTANT PRESTATION',
				'label_input3'=>'A REGLER')
		);
   					  	
   $asInputs_5 = array(array('select_name_3'=>'Nxx_Type_prestation',
				  		'input_name_2'=>'NXX_montant_prestation', 'input_value_2' => $MNT_PRESTATION, 'class'=>'resizeall', 
						'input_name_3'=>'Nxx_choix1','class'=>'resizeall','choix_value1'=>'true')
						);					
   $asInputs_6 = array(array('select_name_4'=>'Nxx_Type_prestation1',
				  		'input_name_22'=>'NXX_montant_prestation1', 'input_value_22' => $MNT_PRESTATION_1, 'class'=>'resizeall',
						'input_name_23'=>'Nxx_choix2','class'=>'resizeall','choix_value2'=>'true')
						);		
							
	$aOptions1 = array();	 
   	$aOptions2 = array();	 
   	$aOptions3 = array();
   	$aOptions4 = array();
   		
   	$aTypeDecisionAssureur = dataObject_elementdico::elementdico_getListFromCode(dataObject_dictionnaire::_TYPE_DECISION_ASSUREUR);
   	foreach ($aTypeDecisionAssureur as $iKey => $aRow)
   	{
   		$aOpt = array('option_value_1'=> $aRow['Code_element'],
   					  'option_name_1'=> $aRow['Nom_element']);
   		
   		if($DECISION_ASSUREUR == $aRow['Code_element']) $aOpt = array_merge($aOpt, array("selected_1"=> true));
   	
     	$aOptions1[$iKey] = $aOpt;   
   	}
   	
   	$aMotifRefus = dataObject_elementdico::elementdico_getListFromCode(dataObject_dictionnaire::MOTIF_REFUS_INDEMNISATION);
   	foreach ($aMotifRefus as $iKey => $aRow)
   	{
   		$aOpt = array('option_value_2'=> $aRow['Code_element'],
   					  'option_name_2'=> $aRow['Nom_element']);
   		if($MOTIF_REFUS==$aRow['Code_element']) $aOpt = array_merge($aOpt, array("selected_2"=> true));
     	$aOptions2[$iKey] = $aOpt;  
   	}
   	
   	$aTypePrestation = dataObject_elementdico::elementdico_getListFromCode(dataObject_dictionnaire::TYPE_PRESTATION);
   	foreach ($aTypePrestation as $iKey => $aRow)
   	{
   		$aOpt3 =array('option_value_3'=> $aRow['Code_element'],'option_name_3'=>$aRow['Nom_element']);
   		$aOpt4 =array('option_value_4'=>$aRow['Code_element'],'option_name_4'=>$aRow['Nom_element']);
   		if($TYPE_PRESTATION == $aRow['Code_element']) $aOpt3 = array_merge($aOpt3, array("selected_3"=> true));
   		if($TYPE_PRESTATION_1 == $aRow['Code_element']) $aOpt4 = array_merge($aOpt4, array("selected_4"=> true));
        $aOptions3[$iKey] = $aOpt3;   
        $aOptions4[$iKey] = $aOpt4;        
   	}

   $smontantprestation1 = '';
   $smontantprestation2 = '';
  
   if(isset($_POST['valider']))
   {
   		if($_POST['NXX_Decision_assureur'] == 'R')
   		{
   				//3 - le motif de refus doit être sélectionné si la décision de l’assureur est un refus
			   	if($_POST['NXX_motif_refus']== "-1")
			   	{
			   		$oForm->ajouterErreur(motif_refus_vide);
			   	}
			   	//5 – aucune prestation ne doit être saisie si la décision de l’assureur est un refus
			   	else if(($_POST['NXX_montant_prestation']!=null) || ($_POST['NXX_montant_prestation1']!=null))
			   	{
			   		$oForm->ajouterErreur(montant_prestation_non_vide);
			   	}
			   	else
			   	{
			   		$oSinistre->_IDENTIFIANT_SINISTRE = $idSinistre;
			   		
   					$oSinistre->_MOTIF_REFUS_SINISTRE = $MOTIF_REFUS;
   					$oSinistre->_DECISION_PARTENAIRE_SINISTRE = $DECISION_ASSUREUR;
   					$oSinistre->_ETAT_SINISTRE = "I";
   					
   					$oEvenement->_IDENTIFIANT_CONTRAT = $idContrat;
   					$oEvenement->_IDENTIFIANT_AGENT = $idUser;
   					$oEvenement->_IDENTIFIANT_PERSONNE = $idPersonne;
   					$oEvenement->_IDENTIFIANT_PRESTATION = '';
   					$oEvenement->_IDENTIFIANT_SINISTRE = $idSinistre;
   					$oEvenement->_DATE_EVENT = $date_evenement;
   					$oEvenement->_SOUS_TYPE_EVENT = 'SRI';
   					$oEvenement->_TYPE_EVENT = 'S';
   					
   					$oConnexionBis = new CDatabaseMysql();
   					$oConnexionBis->beginTransaction();
   					$sinistre_update = $oSinistre->sinistre_update();
   					if($sinistre_update !== false)
   					{
   						$evenement = $oEvenement->evenement_insert();
   						if($evenement)
   						{
   							//tout est ok
   							$oConnexionBis->commit();
			   				//$oForm->ajouterErreur(result_instruction_prisencompte);
	   					}
	   					else 
	   					{
	   						//rollback de la maj du sinistre
	   						$oConnexionBis->rollback();
	   						/*$oSinistre->_DECISION_PARTENAIRE_SINISTRE = $sOldDecisionPart;
	   						$oSinistre->_MOTIF_REFUS_SINISTRE = $sOldMotifRefus;
   							$oSinistre->_ETAT_SINISTRE = $sOldEtatSinistre;
   							*/
	   						//+ message d'erreur technique
	   						$oForm->ajouterErreur(pb_crevenement_resulinstruction);
	   					}
   					}
   					else 
   					{
   						//+ message d'erreur technique
   						$oForm->ajouterErreur(pb_modif_sinistre);
   						$oConnexionBis->rollback();
   					}
   				
   					
			   	}
		   	
		}
		else if($_POST['NXX_Decision_assureur']=='A')
		{
			//4 - aucun motif de refus ne doit être sélectionné si la décision de l’assureur est une acceptation
	   		if($_POST['NXX_motif_refus']!="-1")
		   	{
		   		$oForm->ajouterErreur(motif_refus_non_vide);
		   	}
		   	//6 – une prestation doit être saisie si la décision de l’assureur est une acceptation
		 	else if(($_POST['NXX_montant_prestation']==null || $_POST['NXX_montant_prestation']=='') && ($_POST['NXX_montant_prestation1']==null || $_POST['NXX_montant_prestation1']==''))
		   	{
		   		$oForm->ajouterErreur(montant_prestation_vide);
		   	}
	    	else 
	    	{
		    	if(($_POST['NXX_montant_prestation']!= null) && ($_POST['NXX_montant_prestation']!= ''))
			   	{
	
			   		if($_POST['Nxx_Type_prestation']=="-1")
			   			$type_prestation = null;
			   		else $type_prestation = $_POST['Nxx_Type_prestation'];
			   		
			   		$montant_prestation = $_POST['NXX_montant_prestation'];
			   		$smontantindemnisation1 = $oSinistre->sinistre_getMontantIndemnisation($idSinistre, $sDateSurvenance, $type_prestation);
					
				   	if(!verifNumeric($montant_prestation))
				   	{
				        	$oForm->ajouterErreur(mnt_prestation_not_numeric);
				   	}
				  	else if($_POST['Nxx_Type_prestation']== "-1")
			   		{
			   			$oForm->ajouterErreur(type_prestation_vide);
			   		}
			   		else if(intval($montant_prestation) > intval($smontantindemnisation1)) 
				   	{
				   			$oForm->ajouterErreur(mnt_prestation_gt_mnt_indemnisation);
				   	}
			   		/*else if($_POST['Nxx_choix1']!="true")
	   				{
	   						$oForm->ajouterErreur('');
	   				}*/
				   	else
				   	{
				   		//7 - créer autant de prestations, avec un état à A (à régler), que de montants de prestation significatifs
				   			if($type_prestation == 'NA') $sCodeTypePrest = 'A';
				   			else $sCodeTypePrest = 'U';
				   			
					   		$oPrestation->_IDENTIFIANT_SINISTRE = $idSinistre;
		   					$oPrestation->_MONTANT_PRESTATION = $montant_prestation;
		   					$oPrestation->_TYPE_PRESTATION = $sCodeTypePrest;
		   					$oPrestation->_ETAT_PRESTATION = 'A';
				   				
		   					$oSinistre->_IDENTIFIANT_SINISTRE = $idSinistre;
		   					$oSinistre->_DECISION_PARTENAIRE_SINISTRE = $DECISION_ASSUREUR;
		   					$oSinistre->_ETAT_SINISTRE = "I";
		   					
					   		$oEvenement->_IDENTIFIANT_CONTRAT = $idContrat;
		   					$oEvenement->_IDENTIFIANT_AGENT = $idUser;
		   					$oEvenement->_IDENTIFIANT_PERSONNE = $idPersonne;
		   					$oEvenement->_IDENTIFIANT_PRESTATION = '';
		   					$oEvenement->_IDENTIFIANT_SINISTRE = $idSinistre;
		   					$oEvenement->_DATE_EVENT = $date_evenement;
		   					$oEvenement->_SOUS_TYPE_EVENT = 'SRI';
		   					$oEvenement->_TYPE_EVENT = 'S';
		   					
		   					$oConnexionBis = new CDatabaseMysql();
   							$oConnexionBis->beginTransaction();
   					
		   					$idLastprestation = $oPrestation->prestation_insert();
		   					if($idLastprestation)
		   					{
		   						$sinistre_update = $oSinistre->sinistre_update();
		   						if($sinistre_update !== false )
		   						{
		   							$evenement = $oEvenement->evenement_insert();
			   						if($evenement)
			   						{
			   							//tout est ok
			   							$oConnexionBis->commit();
			   							//$oForm->ajouterErreur(result_instruction_prisencompte);
				   					}
				   					else 
				   					{
				   						//rollback de la maj du sinistre
				   						$oConnexionBis->rollback();
				   						
				   						//+ message d'erreur technique
				   						$oForm->ajouterErreur(pb_crevenement_resulinstruction);
				   					}
		   						}
		   						else 
		   						{
		   							//rollback de la prestation enregistrée
		   							$oConnexionBis->rollback();
		   							//+ message d'erreur technique
		   							$oForm->ajouterErreur(pb_modif_sinistre);
		   						}
		   					}
		   					else
		   					{
		   						$oConnexionBis->rollback();
		   						$oForm->ajouterErreur(pb_modifprestation_reglesinistre);
		   					}
				   		
				   	}
			   	}
	   			 
			   	if(($_POST['NXX_montant_prestation1']!= null) && ($_POST['NXX_montant_prestation1']!= '') )
			   	{
					$montant_prestation2 = $_POST['NXX_montant_prestation1'];
					
			   		if($_POST['Nxx_Type_prestation1']=="-1")
			   			 $type_prestation = null; 	
			   		else $type_prestation = $_POST['Nxx_Type_prestation1'];
			   		
			   		$smontantindemnisation2 = $oSinistre->sinistre_getMontantIndemnisation($idSinistre,$sDateSurvenance, $type_prestation);
			   		if(!verifNumeric($montant_prestation2))
				   	{
				        $oForm->ajouterErreur(mnt_prestation_not_numeric);
				   	}
				    else if($_POST['Nxx_Type_prestation1']== "-1")
			   		{
			   			$oForm->ajouterErreur(type_prestation_vide);
			   		}  
			   		
		   			else if(intval($montant_prestation2) > intval($smontantindemnisation2) )
			   		{
			   			$oForm->ajouterErreur(mnt_prestation_gt_mnt_indemnisation);
			   			
			   		}
			   		/*else if($_POST['Nxx_choix2']!="true")
	   				{
	   						$oForm->ajouterErreur('');
	   				}	*/
			   		else
				   	{
				   		//7 - créer autant de prestations, avec un état à A (à régler), que de montants de prestation significatifs
				   		if($type_prestation == 'NA') $sCodeTypePrest = 'A';
				   		else $sCodeTypePrest = 'U';
				   			
				   		$oPrestation->_IDENTIFIANT_SINISTRE = $idSinistre;
	   					$oPrestation->_MONTANT_PRESTATION = $montant_prestation2;
	   					$oPrestation->_TYPE_PRESTATION = $sCodeTypePrest;
	   					$oPrestation->_ETAT_PRESTATION = 'A';
	   					
	   					$oSinistre->_IDENTIFIANT_SINISTRE = $idSinistre;
	   					$oSinistre->_DECISION_PARTENAIRE_SINISTRE = $DECISION_ASSUREUR;
	   					$oSinistre->_ETAT_SINISTRE = "I";
	   					
				   		$oEvenement->_IDENTIFIANT_CONTRAT = $idContrat;
	   					$oEvenement->_IDENTIFIANT_AGENT = $idUser;
	   					$oEvenement->_IDENTIFIANT_PERSONNE = $idPersonne;
	   					$oEvenement->_IDENTIFIANT_PRESTATION = '';
	   					$oEvenement->_IDENTIFIANT_SINISTRE = $idSinistre;
	   					$oEvenement->_DATE_EVENT = $date_evenement;
	   					$oEvenement->_SOUS_TYPE_EVENT = 'SRI';
	   					$oEvenement->_TYPE_EVENT = 'S';
	   					
	   					$oConnexionBis = new CDatabaseMysql();
   						$oConnexionBis->beginTransaction();
   					
	   					$idLastprestation = $oPrestation->prestation_insert();
	   					if($idLastprestation)
	   					{
	   						$sinistre_update = $oSinistre->sinistre_update();
	   						if($sinistre_update !== false)
	   						{
	   							$evenement = $oEvenement->evenement_insert();
		   						if($evenement)
		   						{
		   							//tout est ok
		   							$oConnexionBis->commit();
			   						//$oForm->ajouterErreur(result_instruction_prisencompte);
			   					}
			   					else 
			   					{
			   						//rollback de la maj du sinistre
			   						$oConnexionBis->rollback();
			   									   						
			   						//+ message d'erreur technique
			   						$oForm->ajouterErreur(pb_crevenement_resulinstruction);
			   					}
	   						}
	   						else 
	   						{
	   							//rollback de la prestation enregistrée
	   							$oConnexionBis->rollback();
	   							//+ message d'erreur technique
	   							$oForm->ajouterErreur(pb_modif_sinistre);
	   						}
	   					}
	   					else 
	   					{
	   						$oConnexionBis->rollback();
	   						$oForm->ajouterErreur(pb_modifprestation_reglesinistre);
	   					}
	   					   						
				   	}
			    }
	    	}//fin else motif refus saisi en cas d'acceptation assureur
	  }
   }//fin $_POST valider

    $oPaj->iterateReplace('options_1', $aOptions1);
	$oPaj->iterateReplace('options_2', $aOptions2);
	$oPaj->iterateReplace('options_3', $aOptions3);
	$oPaj->iterateReplace('options_4', $aOptions4);
	$oPaj->iterateReplace('champ_input', $asInputs);
	$oPaj->iterateReplace('champ_input_2', $asInputs_2);
	$oPaj->iterateReplace('champ_input_3', $asInputs_3);
	$oPaj->iterateReplace('champ_input_4', $asInputs_4);
	$oPaj->iterateReplace('champ_input_5', $asInputs_5);
	$oPaj->iterateReplace('champ_input_6', $asInputs_6);

	$oPaj->replace('url_retour_fonction', 'index.php?idbloc='.$oBloc->_MENU_ID.'&idfonction='.$oFonction->_MENU_ID.'&idc='.$idContrat);
	
	$oPaj->iterateReplace('messages', $oForm->getValidMessage());
	
	
	/***** affichage de la page ainsi parametrée *****/
	echo $oPaj->toString();


	include_once PATH_INCLUDE.'inc_pied_page.php';
?>
